Many data storage devices, such as flash memory devices, store data in cells of non-volatile media. A physical property of each cell, such as a stored charge, voltage, material phase, electrical resistance, magnetization, or the like, is alterable to encode data. A cell's physical property may be variable across a range, which may be divided into discrete states, so that different states correspond to different data values. Sensing whether the cell's physical property satisfies one or more read thresholds (e.g., voltage thresholds, resistivity thresholds, or the like) within its range determines the cell's state, thus allowing recovery of a stored data value.
Nonvolatile memory types include, but are not limited to, ReRAM, Memristor memory, programmable metallization cell memory, phase-change memory (PCM, PCME, PRAM, PCRAM, ovonic unified memory, chalcogenide RAM, or C-RAM), NAND flash memory (e.g., 2D NAND flash memory, 3D NAND flash memory), NOR flash memory, nano random access memory (nano RAM or NRAM), nanocrystal wire-based memory, silicon-oxide based sub-10 nanometer process memory, graphene memory, Silicon-Oxide-Nitride-Oxide-Silicon (SONOS), programmable metallization cell (PMC), conductive-bridging RAM (CBRAM), magneto-resistive RAM (MRAM), spin-transfer torque (STT) MRAM, spin orbit torque SOT-MRAM, magnetic storage media (e.g., hard disk, tape), optical storage media, and the like. Among non-volatile memory types used to encode information in retained charges, various charging and/or charge retention technologies may be used, including but not limited to floating gate and charge trapping technologies. In many of the foregoing technologies, the memory types can experience changes in the threshold voltage (Vth) above which the cell is read as being programmed. The result of such threshold voltage shift, if no corrective action is taken, may be read errors in cells.